原文:OpenApi Spec翻译:小虾米(QQ:509129)
参考:OpenAPI Specification 2.0
OpenApi 规范(OpenApi Spec)fka Swagger RESTful API 文档规范
版本2.0(Version 2.0)
文中所使用到的”MUST”,”MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “MAY”和”OPTIONAL”均遵循RFC 2119定义。
Swagger 规范是根据 The Apache License, Version 2.0.
介绍(Introductions)Swagger™ 是一个用于描述文档的RESTful API项目。
Swagger 规范定义了描述这种API所需的一组文件。这些文件可以 Swagger-UI 项目用来显示API和Swagger的代码生成生成各种语言的客户。额外的实用程序也可以利用生成的文件,例如测试工具。
修订历史(Revision History)定义(Definitions)路径模板(Path Templating)
路径模板是指使用大括号 ({}) 来标记URL路径的一部分,使用路径参数作为可替换的参数。
MIME类型(Mime Types)
MIME类型定义在多个资源中传播。MIME类型定义应符合RFC 6838。
可能MIME类型定义的一些示例:
text/plain;application/json application/vnd.github+json application/vnd.github.v3+json application/vnd.github.v3.raw+json application/vnd.github.v3.text+json application/vnd.github.v3.html+json application/vnd.github.v3.full+json application/vnd.github.v3.diff application/vnd.github.v3.patchHTTP状态码(HTTP Status Codes)
HTTP状态码用于指示执行的操作的状态。RFC 7231和IANA状态代码注册表中描述了可用的状态代码。
规范(Specification)格式(Format)根据Swagger的规范描述RESTful API的文件被表示为JSON对象,并符合JSON标准。YAML作为JSON的超集,也可以用来表示一个Swagger的规范文件。
例如,如果字段被认为具有数组值,那么将使用JSON数组表示:
{"field" : [...]}当使用JSON描述API时,它不会将JSON输入/输出强加给API本身。
规范中的所有字段名称都是大小写敏感的。
该模式公开了两种类型的字段(fields)。
第一种是fixed fields,是说field的名称是固定的;
第二种是Patterned fields,field的名字不是固定的,而是使用正则表达式匹配。
文件结构(File Structure)Swagger的规范要求将API用一个单一的文件表示。不过,根据用户的判断,部分定义可以拆成多个文件。使用 $ref 将他们拼合在一起。这符合JSON Schema规范。
按照惯例,Swagger规范文件命名为 swagger.json。
数据类型(Data Types)Swagger 规范中的原始数据类型基于JSON-Schema Draft 4所支持的类型。使用模式对象描述模型,该对象是JSON Schema Draft 4的子集。
另外一个原始数据类型“file”,用于在参数对象或者响应对象中设置参数类型或者响应为一个文件
原始类型有一个可选的属性format,Swagger使用了集中常见的格式来对数据类型做更细微的定义。然而,format属性是一个开放式的string类型的数据,可以填写任何支持的属性。格式可以是email、uuid,甚至可以是一些没有在规范中支持的属性。格式和数据类型并不一定要一致(文件除外),Swagger定义了如下格式
模式(Schema)Swagger 对象(Swagger Object)
这是API规范的根文档对象。它将以前的资源清单和API